# _*_ coding: UTF-8 _*_
# @Time     : 2021/11/2 11:27
# @Author   : 郑鲁明
# @Site     : http://www.hzdledu.cn/
# @File     : 高级动作.py
# @Software : PyCharm

from selenium import webdriver
import time
from selenium.webdriver.common.action_chains import ActionChains


# ActionChains动作链条
# 可以实现基本操作，还可以实现鼠标的操作

def foo1():
    driver = webdriver.Chrome()
    driver.maximize_window()
    driver.get('https://map.baidu.com/')
    time.sleep(3)

    # 模拟鼠标的右键
    # 参数：element=None,1.指定点击的元素。2.如果参数为空，点击鼠标当前位置（没有代码移动鼠标的时候，为(0,0)点）
    # 最后一定要加.perform（）才会执行
    ActionChains(driver).context_click().perform()  # perform()执行的意思

    time.sleep(2)
    # 模拟鼠标左键双击
    ActionChains(driver).double_click().perform()

    time.sleep(2)
    # 模拟按住鼠标左键不放
    # 参数：element=None,1.指定点击的元素。2.如果参数为空，点击鼠标当前位置（没有代码移动鼠标的时候，为(0,0)点）
    ActionChains(driver).click_and_hold().perform()

    # 移动鼠标
    # move_by_offset(xoffset,yoffset):xoffset,x轴移动距离；yoffset,y轴移动距离
    ActionChains(driver).move_by_offset(600, 0).perform()
    # move_to_element(source,target)  移动鼠标到某个元素

    # 释放鼠标
    ActionChains(driver).release().perform()

    # 拖拽鼠标
    # drag_and_drop_by_offset(element,xoffset,yoffset):element被拖拽的元素
    ActionChains(driver).drag_and_drop_by_offset().perform()

    # 模拟键盘输入
    ActionChains(driver).send_keys_to_element(driver.find_element_by_id('sole-input'),'胜利河美食街').perform()

    # 模拟键盘输入
    ActionChains(driver).click(driver.find_element_by_id('search-button')).perform()

    # 动作链条
    # 多个动作通过 . 连接成动作链条，最后.perform执行
    ActionChains(driver).click_and_hold().move_by_offset(800,500).release().perform()



    time.sleep(2)
    driver.quit()


if __name__ == '__main__':
    foo1()
